package com.cskaoyan._03otherstream._02print;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

/**
 * @description:
 * @author: 景天
 * @date: 2023/2/20 14:45
 **/
/*
案例:

定义一个类Printer

定义成员变量OutputStream

定义5个方法

写int的方法  void printInt(int a)

写int并且换行的方法 void printIntLn(int a)

写double的方法  void printDouble(double a)

写double并且换行的方法 void printDoubleLn(double a)

写一个close方法  void  close()
 */
public class Demo {
    public static void main(String[] args) throws IOException{
        Printer printer = new Printer(new FileOutputStream("a.txt"));

        // 写1000
        printer.printIntLn(1000);
        // 写3.14
        printer.printDouble(3.14);

        // close
        printer.close();
    }
}

class Printer{
    //定义成员变量OutputStream
    private OutputStream out;

    public Printer(OutputStream out) {
        this.out = out;
    }
    // 成员方法
    //写int的方法  void printInt(int a)

    public void printInt(int a) throws IOException {
        // int--->String
        String s = String.valueOf(a);
        // 写入数据
        out.write(s.getBytes());
    }
    // 写int并且换行的方法 void printIntLn(int a)

    public void printIntLn(int a) throws IOException {
        // int--->String
        String s = String.valueOf(a);
        // 写入数据
        out.write(s.getBytes());
        // 换行
        out.write(System.lineSeparator().getBytes());
    }

    //写double的方法  void printDouble(double a)
    public void printDouble(double a) throws IOException {
        // double---->String
        String s = String.valueOf(a);
        out.write(s.getBytes());
    }

    // 写double的方法  void printDouble(double a)
    public void printDoubleLn(double a) throws IOException {
        // double---->String
        String s = String.valueOf(a);
        out.write(s.getBytes());
        out.write(System.lineSeparator().getBytes());

    }

    // 写一个close方法  void  close()
    public void close() throws IOException {
        out.close();
    }
}